One or more aspects relate to the Information Technology (IT) field. More specifically, one or more aspects relate to the maintenance of software programs.
The background is hereinafter introduced with the discussion of techniques relating to its context. However, even when this discussion refers to documents, acts, artifacts and the like, it does not suggest or represent that the discussed techniques are part of the prior art or are common general knowledge in the field relevant to aspects of the present disclosure.
Software programs are routinely subject to maintenance operations after their delivery; this involves updating processes of the software programs for a number of reasons (for example, to correct errors or to add new functions).
The maintenance of the software programs may be quite complex, especially in large computing systems. Particularly, the maintenance of the software programs may become problematic when multiple instances of a same software program (hereinafter referred to as software instances) are available.
Indeed, during any updating process of the software instances the required updating of some of them may fail. This results in a partial updating of the software instances, with these software instances remaining at an old level (preceding the maintenance operation), while other software instances are already at a new level (enforced by the maintenance operation). The partial updating of the software instances increases a management cost thereof (because of the need of taking into account different levels of the same software program); moreover, the software instances at the old level may adversely affect the quality of a corresponding service. All of the above is exacerbated when the software programs are designed according to the Continuous Delivery (CD) practice (wherein the activities relating to their delivery are automated in a pipeline according to a lean philosophy, aimed at removing any waste that does not add value, based on Poka-Yoke mechanisms, structured to prevent human errors). The continuous delivery practice results in the ability to deliver new levels of the software programs rapidly and repeatedly; however, the corresponding higher frequency of the updating processes also increases the risk of partial updating of the software instances.
A typical example is in cloud computing (or simply cloud) environments, wherein cloud services are provided on-demand by cloud providers that provision, configure and release them upon request (completely masking a corresponding implementation); particularly, in this case, the software programs may be provided as cloud services according to the Software-as-a-Service (SaaS) model. For this purpose, a high number of software instances (of each software program) is generally required to ensure an adequate level of performance and reliability, which software instances should be kept consistently up-to-date to ensure an adequate quality of the corresponding cloud services.